home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib18.dsk
/
CLASS SCHEDULER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
131 lines
10 REM **********************
20 REM * CLASS SCHEDULER *
30 REM * BY PAUL M. HYMAN *
40 REM * COPYRIGHT (C) 1983 *
50 REM * BY MICROSPARC, INC *
60 REM * LINCOLN, MA. 01773 *
70 REM **********************
80 TEXT : HOME : PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": PRINT
100 REM ARRAY OF CLASS NAMES
110 DIM CN$(8)
120 REM NUMBER OF SECTIONS FOR EACH CLASS
130 DIM NS(8)
140 REM ST IS START TIMES
150 REM ET IS END TIMES
160 REM SPACE FOR 8 CLASSES*10 SECTIONS PER CLASS*5 DAYS/WK
170 REM A START TIME OF 0 MEANS CLASS DOES NOT MEET THAT DAY
180 DIM ST(8,10,5)
190 DIM ET(8,10,5)
200 REM CURRENTLY SELECTED SECTION NUMBERS FOR EACH CLASS
210 DIM CS(8)
220 DATA "MON","TUE","WED","THU","FRI"
230 D$ = CHR$(4)
240 SC = 0
250 INPUT "ENTER CLASS DATA FILENAME - ";FF$
260 PRINT
270 PRINT D$;"OPEN ";FF$
280 PRINT D$;"READ ";FF$
290 INPUT NC
300 FOR I = 0 TO NC -1
310 INPUT CN$(I)
320 IF CN$(I) = "" GOTO 310
330 INPUT NS(I)
340 FOR J = 0 TO NS(I) -1
350 FOR K = 0 TO 4
360 FOR L = 0 TO 1
370 GET X$
380 IF X$ = " " GOTO 370
390 IF X$ = CHR$(13) GOTO 370
400 GET Y$
410 IF Y$ <"0" OR Y$ >"9" GOTO 440
420 X$ = X$ +Y$
430 GET Y$
440 X = VAL(X$)
450 IF Y$ < >":" GOTO 510
460 GET X$
470 GET Y$
480 X$ = X$ +Y$
490 Y = VAL(X$)
500 GOTO 520
510 Y = 0
520 IF X <7 AND X >0 THEN X = X +12
530 X = X *60 +Y
540 IF L = 0 THEN ST(I,J,K) = X
550 IF L = 1 THEN ET(I,J,K) = X
560 NEXT L
570 NEXT K
580 NEXT J
590 NEXT I
600 PRINT
610 PRINT D$;"CLOSE ";FF$
620 FOR I = 0 TO NC -1
630 CS(I) = 0
640 NEXT
650 CF = 0
660 FOR I = 0 TO NC -2
670 FOR J = I +1 TO NC -1
680 PRINT ".";
690 FOR K = 0 TO 4
700 S1 = ST(I,CS(I),K)
710 S2 = ST(J,CS(J),K)
720 E1 = ET(I,CS(I),K)
730 E2 = ET(J,CS(J),K)
740 IF (S1 > = S2 AND S1 <E2) OR (E1 >S2 AND E1 < = E2) GOTO 760
750 GOTO 770
760 IF S1 < >0 AND S2 < >0 THEN CF = 1
770 NEXT K
780 NEXT J
790 NEXT I
800 IF CF = 0 THEN GOSUB 910:SC = 1
810 REM INCREMENT SEC #S TO NEXT SCHEDULE
820 FOR I = 0 TO NC -1
830 CS(I) = CS(I) +1
840 IF CS(I) = NS(I) THEN CS(I) = 0: GOTO 860
850 I = 1000: REM EXITLOOP
860 NEXT
870 IF I = 1001 GOTO 650
880 IF SC = 0 THEN PRINT "NOT POSSIBLE TO SCHEDULE CLASSES"
890 END
900 REM SUBROUTINE TO DISPLAY SCHEDULE
910 HOME
920 MI$ = "30"
930 HR = 6
940 FOR I = 2 TO 23
950 IF MI$ < >"30" GOTO 1000
960 MI$ = "00"
970 HR = HR +1
980 IF HR >12 THEN HR = HR -12
990 GOTO 1010
1000 MI$ = "30"
1010 VTAB I
1020 HTAB 1
1030 IF HR <10 THEN PRINT " ";
1040 PRINT HR;MI$;
1050 NEXT
1060 RESTORE
1070 FOR I = 1 TO 5
1080 HTAB 7 *I
1090 VTAB 1
1100 READ DA$
1110 PRINT DA$
1120 NEXT
1130 FOR I = 0 TO NC -1
1140 FOR J = 0 TO 4
1150 S1 = ST(I,CS(I),J):E1 = ET(I,CS(I),J)
1160 V = 1
1170 FOR TM = 420 TO 1080 STEP 30
1180 V = V +1
1190 IF S1 < = TM AND E1 >TM GOTO 1210
1200 GOTO 1240
1210 HTAB 7 *(J +1)
1220 VTAB V
1230 PRINT CN$(I);
1240 NEXT TM
1250 NEXT J
1260 NEXT I
1270 VTAB 24: HTAB 1
1280 PRINT "PRESS RETURN FOR NEXT SCHEDULE";
1290 GET Z$
1300 VTAB 24: HTAB 1: CALL -868
1310 RETURN
1320 END